The present invention relates generally to coding systems and more specifically to optimizing the coding gain of a coding system.
Several factors can cause errors within a transmission system, and such errors adversely affect the quality of the transmissions. One source of errors in transmissions is noise present in the transmission channel. The existence of errors due to noise or other factors adversely affects the overall performance of the system. Coding systems are commonly used to improve the overall performance of transmission systems by enabling errors to be detected and corrected. The improved performance of a transmission system due to coding is commonly known as coding gain.
One type of coding system that produces coding gain is forward error correction, which enables errors introduced into a transmission to be corrected by the receiver/decoder. There are costs associated with forward error correction, however, because encoding and decoding increases the time it takes to complete a given transmission. The transmitter requires additional time to effectuate the encoding of a transmission and the receiver requires additional time to decode the transmission. Generally, the decoding process introduces more delay than the encoding process. This time delay from the transmitter across a transmission channel and through the receiver is referred to as latency.
Coding systems used to implement coding schemes, such as forward error correction, exist in many forms. These systems typically include both transmitter/encoders and receiver/decoders. Transmitters/encoders utilize coding schemes such as convolutional coding and block coding to enable forward error correction. Convolutional coding systems continuously encode bits of data by introducing redundant bits that depend on the current input set of data as well as past input sets of data. Block coding systems encode blocks of data that only depend on the current block of input data and have no memory of past input blocks. Both the convolutionally encoded bits and the block encoded bits of data are transmitted via a transmission channel to the decoder.
Sequential decoding is a well known technique for decoding convolutional codes. Typically, sequential decoding is used to decode convolutional codes containing constraint lengths that are greater than 13. Convolutional codes having constraint lengths greater than 13 are not readily decoded by maximum likelihood techniques such as the Viterbi algorithm.
The presence of noise or other error causing factors in a transmission system can be dynamic in that they can change over time. Problems associated with the dynamic nature of these factors are of particular interest to telecommunications system operators. Generally, telecommunications system providers strive to minimize latency throughout their systems while still overcoming the adverse effects of errors resulting from noise or other factors.
In most applications, the latency associated with forward error correction is only a small portion of the overall latency of the system. However, in telecommunications applications, and particularly with reference to digital subscriber lines, the latency associated with forward error correction constitutes a significant portion of the overall latency. Thus, for digital subscriber lines, there is a potential simultaneous need for high coding gain and low latency. Because of the dynamic nature of error causing factors and the costs associated with coding, it is desirable to utilize a coding system that enables the coding gain to be varied over time.
Coding systems that allow for variable coding gain generally do so by providing encoders and decoders that are both variable. For example, to encode transmissions a coding system may select a single code from a group of several different codes, each of which has a different coding gain and associated latency. The decoder then selects the appropriate decoding algorithm for the selected code. Such approaches require changes to both the transmitter/encoder and receiver/decoder.
In order to adjust such systems, changes must be made to both the encoder and the decoder. The data connection between the encoder and decoder is typically disconnected as the changes are made and then restarted once the changes are complete. This creates an interruption in data transmission which is undesirable for potential users of the system. For example, if a data connection was used to connect a private branch exchange (PBX), an interruption in service to change the encoder and decoder would result in all the current telephone calls within the PBX being dropped.